#!/bin/bash
# Script que permite configurar los servidores WEB, FTP y TELNET.
#
#


########### -------- NO TOCAR DESDE ACA ---------#####################
# Archivo de constantes
. ./const.sh
# Archivo de funciones
. ./utils.sh


function web(){

	log "INICIANDO CONFIGURACION DE SERVIDOR WEB"
	log "--------------------------------------"

	log "Verificando existencia de demonio de Apache..."
	checkExec "$APACHE_DAEMON" "No existe demonio del Apache"
	# apt-get install apache2
	checkStatusAbort
	checkExist "$MI_APACHE_CONF"
	checkStatusAbort
	checkExist "$INDEX_HTML"
	checkStatusAbort

	checkExec "$DNS_SCRIPT"
	checkStatusAbort
	
	log "Copiando  el archivo de configuracion de Apache - $MI_APACHE_CONF a $APACHE_CONF ..."
	#$BACKUP $APACHE_CONF $APACHE_CONF.grupo7
	
	cp -R $APACHE_ETC{,.original}
	if [ -d $APACHE_ETC ]; then
		rm -fr $APACHE_ETC
	fi
	cp -R $MI_APACHE_ETC $APACHE_ETC

	# Reemplazo el conf
	sed "s#@@APACHE_HOME@@#${APACHE_HOME}#g" $MI_APACHE_CONF | sed "s#@@APACHE_NAME@@#${APACHE_NAME}#g" - | sed "s#@@APACHE_MODULES@@#${APACHE_MODULES}#g" - > $APACHE_CONF

	chown www-data:www-data -R $APACHE_ETC

	log "Limpiando interfaces del servidor ..."
	limpiarInterfaces

	IF=`$IFCONFIG | egrep "eth" | sed 's/^\([A-Za-z0-9:]*\).*/\1/'`
	log "Detectada interfaz -> $IF "

	log "Configurando IP del webserver ..."
	debug on
	$IFCONFIG $IF $HTTP_IP broadcast $HTTP_BCAST netmask $MASK24 
	debug off

	log "Configurando tablas de ruteo del webserver ..."
	debug on
	# $ROUTE_MULITA $IF
	$ROUTE add default gw $H4_MULITA
	debug off

	log "Desactivando ICMP redirects..."
	redirects off

	log "Creando directorio web $APACHE_HOME , sera borrado si existe..."
	if [ -d $APACHE_HOME ]; then
		rm -fr $APACHE_HOME
	fi
	mkdir -p $APACHE_HOME

	chmod -R 777 $APACHE_LOGS
	
	log "Copiando pagina de inicio $INDEX_HTML ..."
	cp $INDEX_HTML $APACHE_HOME

	log "Dando permisos al usuario de apache en el home ..."	
	chown www-data:www-data -R $APACHE_HOME

	NAME="WEBSERVER"
	log "Seteando nombre de equipo $NAME"
	hostname $NAME
	echo "$NAME" > /etc/hostname
	echo "127.0.0.1	localhost $NAME" > /etc/hosts
	
	log "Reiniciando demonio de apache ..."
	$APACHE_DAEMON restart

	log "Aplicando configuracion de RESOLV.CONF - Resto ..."
	$DNS_SCRIPT resolv resto
	
	exit 0
}


function telnet(){
	# REQUIERE : apt-get install -y --force-yes openbsd-inetd inetutils-telnet
	log "INICIANDO CONFIGURACION DE SERVIDOR TELNET"
	log "------------------------------------------"

	log "Realizando chequeos iniciales ..."
	checkExec "$INETD_DAEMON" "No existe demonio de INETD, ejecute 'apt-get install openbsd-inetd -y --force-yes' e intente nuevamente"
	
	checkStatusAbort
	checkExec "/usr/sbin/in.telnetd" "No existe complemento TELNET de INETD, ejecute 'apt-get install telnetd -y --force-yes' e intente nuevamente"
	checkStatusAbort
	checkExist "$INETD_TELNET"
	checkStatusAbort
	checkExec "$DNS_SCRIPT"
	checkStatusAbort
	
	log "Creando home para telnet $TELNET_HOME , sera borrado si existe..."
	if [ -d $TELNET_HOME ]; then
		rm -fr $TELNET_HOME
	fi	
	mkdir -p $TELNET_HOME
	
	log "Creando usuario para telnet $TELNET_USER ..."
	userdel $TELNET_USER
	useradd -d $TELNET_HOME $TELNET_USER

	log "Limpiando interfaces del servidor ..."
	limpiarInterfaces

	IF=`$IFCONFIG | egrep "eth" | sed 's/^\([A-Za-z0-9:]*\).*/\1/'`
	IF2=$IF":0"
	log "Detectada interfaz -> $IF "

	log "Configurando IPs del telnet server ..."
	debug on
	$IFCONFIG $IF $TELNET1_IP broadcast $TELNET1_BCAST netmask $MASK25 
	$IFCONFIG $IF2 $TELNET2_IP broadcast $TELNET2_BCAST netmask $MASK28
	debug off

	log "Configurando tablas de ruteo del telnetserver ..."
	debug on
	# $ROUTE_MONO $IF
	# $ROUTE_HUEMUL $IF2
	$ROUTE_MURCIELAGO $IF gw $H13_MONO
	$ROUTE_MARMOSA $IF gw $H13_MONO
	$ROUTE_MULITA $IF gw $H13_MONO
	$ROUTE add default gw $H15_HUEMUL
	debug off

	log "Desactivando ICMP redirects..."
	redirects off

	log "Copiando archivos de configuracion de INETD - $INETD_TELNET a $INETDCONF ..."
	$BACKUP $INETDCONF $INETDCONF.grupo7
	cp $INETD_TELNET $INETDCONF

	log "Reiniciando servidor INETd"
	$INETD_DAEMON restart 
	checkStatusAbort

	log "Aplicando configuracion de RESOLV.CONF - Resto ..."
	$DNS_SCRIPT resolv resto
	
	exit 0
}

function ftp(){

	log "INICIANDO CONFIGURACION DE SERVIDOR FTP"
	log "--------------------------------------"

	log "Verificando si Existe PROFTPD ..."
	checkExec "$PROFTPD_DAEMON" "No existe demonio de PROFTPD, ejecute 'apt-get install proftpd' e intente nuevamente"
	# apt-get install proftpd
	checkStatusAbort
	checkExist "$MI_PROFTPD_CONF"
	checkStatusAbort

	#log "Verificando si existe INETD ..."
	#checkExec "$INETD_DAEMON" "No existe demonio de INETD, ejecute 'apt-get install openbsd-inetd' e intente nuevamente"
	# apt-get install openbsd-inetd
	#checkStatusAbort
	#checkExist "$INETD_FTP"
	#checkStatusAbort
	log "Verificando si existe el archivo para configurar el dns $DNS_SCRIPT ..."	
	checkExec "$DNS_SCRIPT"
	checkStatusAbort

	log "Se intenta detener el demonio $PROFTPD_DAEMON ..."
	$PROFTPD_DAEMON stop
	
	ESTADO="`netstat -tuna | grep ":21 " | wc -l`"
	if [ "$ESTADO" != "0" ]; then
		log "No se pudo cerrar correctamente, se matara a la fuerza ..."
		pkill -9 proftpd
	fi

	log "Copiando el archivo de configuracion de ProFTP $PROFTPD_CONF ..."
	$BACKUP $PROFTPD_CONF $PROFTPD_CONF.grupo7
	cp $MI_PROFTPD_CONF $PROFTPD_CONF
	

	log "Creando el home $PROFTPD_HOME, usuario y un archivo de prueba para bajar ..."
	if [ -d $PROFTPD_HOME ]; then
		rm -fr $PROFTPD_HOME
	fi	
	mkdir -p $PROFTPD_HOME
	
	log "Creando usuario para ftp $PROFTPD_USER ..."
	userdel $PROFTPD_USER
	useradd -d $PROFTPD_HOME $PROFTPD_USER

	log "Dando permisos en el home $PROFTPD_HOME para $PROFTPD_USER"
	chown -R $PROFTPD_USER: $PROFTPD_HOME

	log "Generando archivo de prueba del ftp ..."
	echo "PROBANDO EL FTP SERVER" > $PROFTPD_HOME/prueba.txt

	log "Limpiando interfaces del servidor ..."
	limpiarInterfaces

	IF=`$IFCONFIG | egrep "eth" | sed 's/^\([A-Za-z0-9:]*\).*/\1/'`
	log "Detectada interfaz -> $IF "

	log "Configurando IP del ftpserver ..."		
	debug on	
	$IFCONFIG $IF $FTP_IP broadcast $FTP_BCAST netmask $MASK24
	debug off

	log "Configurando tablas de ruteo del ftpserver ..."
	debug on
	# $ROUTE_GATO $IF
	$ROUTE add default gw $H31_GATO
	debug off

	log "Desactivando ICMP redirects..."
	redirects off
	
	#log "Copiando archivos de configuracion de INETD - $INETD_FTP a $INETDCONF ..."
	#$BACKUP $INETDCONF $INETDCONF.grupo7
	#cp $INETD_FTP $INETDCONF

	#log "Reiniciando servidor INETd"
	#$INETD_DAEMON restart
	
	NAME="FTPSERVER"
	log "Seteando nombre de equipo $NAME"
	hostname $NAME
	echo "$NAME" > /etc/hostname
	echo "127.0.0.1	localhost $NAME" > /etc/hosts

	log "Reiniciando servidor PROFTPd"
	$PROFTPD_DAEMON start

	# Podria chequear si quedo escuchando "netstat -tna | grep ":21 " | wc -l"

	log "Aplicando configuracion de RESOLV.CONF - Concaran..."
	$DNS_SCRIPT resolv concaran
	
	exit 0
}


function ayuda(){

	echo "Error en los parametros"
	echo "-----------------------"
	echo "Los parametros validos de este script son:"
	echo ""
	echo " web : configura el servidor WEB"
	echo " ftp : configura el servidor FTP"
	echo " telnet : configura el servidor TELNET"

}


######## FIN FUNCIONES - inicio ejecucion #################

inicio

#Desactivo el forwardeo
forwardeo off

case $1 in
web) web;;
telnet) telnet;;
ftp) ftp;;
*) ayuda
esac 
